﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class ОбработкаТабличныхЧастей
	{
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ОБРАБОТКИ ТАБЛИЧНОЙ ЧАСТИ ТОРГОВЫХ ДОКУМЕНТОВ
		// Процедура выполняет стандартные действия при изменении номенклатуры
		// в строке табличной части документа (очищает ссылки на подчиненные справочники).
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа
		//  ИмяЕдиницыИзмерения  - наименование единицы измерения
		//

		public void ПриИзмененииНоменклатурыТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, ИмяЕдиницыИзмерения = "ЕдиницаИзмерения"*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			/*// При изменении номенклатуры очистим ссылки на подчиненные справочники
*/
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента(ИмяЕдиницыИзмерения, МетаданныеДокумента, ИмяТабличнойЧасти)
	   И СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти[ИмяЕдиницыИзмерения].Владелец*/)
			{
				//СтрокаТабличнойЧасти[ИмяЕдиницыИзмерения] = Неопределено;
			}
			/*// При изменении номенклатуры очистим единицу мест
*/
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмеренияМест", МетаданныеДокумента, ИмяТабличнойЧасти)
	   И СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест.Владелец*/)
			{
				//СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест = Неопределено;
			}
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("СерияНоменклатуры", МетаданныеДокумента, ИмяТабличнойЧасти)
	   И СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти.СерияНоменклатуры.Владелец*/)
			{
				//СтрокаТабличнойЧасти.СерияНоменклатуры = Неопределено;
			}
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ХарактеристикаНоменклатуры", МетаданныеДокумента, ИмяТабличнойЧасти)
	   И СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры.Владелец*/)
			{
				//СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Неопределено;
			}
		}
		// ПриИзмененииНоменклатурыТабЧасти()
		// Процедура выполняет стандартные действия при изменении единицы цены
		// в строке табличной части документа.
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа
		//

		public void ПриИзмененииЕдиницыТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			//ИмяТабличнойЧасти      = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента    = ДокументОбъект.Метаданные();
			//СтруктураРеквизитовЦен = Новый Структура("Цена, ЦенаВРознице, ЦенаПередачи");
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмеренияМест", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
			{
				if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("КоличествоМест", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
				{
					if(true/*НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмерения)
			   И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура)*/)
					{
						/*ОбщегоНазначения.СообщитьОбОшибке("Для " + СокрЛП(СтрокаТабличнойЧасти.Номенклатура) + " не выбрана единица измерения цены!
				                 |Пересчет количества невозможен.");*/
					}
				}
			}
		}
		// ПриИзмененииЕдиницыТабЧасти
		// Процедура выполняет стандартные действия при изменении единицы мест
		// в строке табличной части документа.
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа
		//

		public void ПриИзмененииЕдиницыМестТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			/*// Рассчитывает количество мест исходя из количества
*/
			//РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
		}
		// ПриИзмененииЕдиницыМестаТабЧасти
		// Процедура выполняет стандартные действия при изменении суммы
		// в строке табличной части документа.
		//
		// Параметры:
		//  СтрокаТабличнойЧасти 					- строка табличной части документа,
		//  ДокументОбъект       					- объект редактируемого документа,
		//  ЕстьРеквизитПроцентСкидкиНаценки 		- признак наличия в документе реквизита ПроцентСкидкиНаценки,
		//  ПересчитыватьСкидку				 		- признак необходимости пересчета скидки для данного пользователя,
		//  ЕстьРеквизитПроцентАвтоматическихСкидок - признак наличия в документе реквизита ПроцентАвтоматическихСкидок

		public void ПриИзмененииСуммыТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, ТекПользователь, РасчетАвтоматическихСкидок = Ложь, ЕстьРеквизитДокументаПроцентСкидкиНаценки = Неопределено, ПересчитыватьСкидкуДокумента = Неопределено, ЕстьРеквизитДокументаПроцентАвтоматическихСкидок = Неопределено, ИмяТабЧастиДокумента = неопределено*/)
		{
			//ИмяТабличнойЧасти = ?(ИмяТабЧастиДокумента=неопределено,ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти),ИмяТабЧастиДокумента);
			if(true/*СтрокаТабличнойЧасти.Количество=0*/)
			{
				//СтрокаТабличнойЧасти.Цена = 0;
			}
		}
		// ПриИзмененииСуммыТабЧасти()
		// Процедура выполняет стандартные действия при изменении номенклатуры
		// в строке табличной части документа (очищает ссылку на подчиненный справочник единиц).
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части возвратная тара документа,
		//  ДокументОбъект       - объект редактируемого документа
		//

		public void ПриИзмененииВозвратнойТарыТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			/*// При изменении номенклатуры очистим ссылку на подчиненный справочник
*/
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмерения", МетаданныеДокумента, ИмяТабличнойЧасти)
	   И СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти.ЕдиницаИзмерения.Владелец*/)
			{
				//СтрокаТабличнойЧасти.ЕдиницаИзмерения = Неопределено;
			}
		}
		// ПриИзмененииВозвратнойТарыТабЧасти()
		// Процедура выполняет стандартные действия при изменении суммы в строке возвратной тары документа.
		//
		// Параметры:
		//  СтрокаВозвратнойТары - строка табличной части возвратная тара документа,
		//  ДокументОбъект       - объект редактируемого документа
		//

		public void ПриИзмененииСуммыВозвратнойТарыТабЧасти(/*СтрокаВозвратнойТары, ДокументОбъект*/)
		{
			if(true/*НЕ ЗначениеЗаполнено(СтрокаВозвратнойТары.Количество)*/)
			{
				//СтрокаВозвратнойТары.Цена = 0;
			}
		}
		// ПриИзмененииСуммыВозвратнойТарыТабЧасти()
		// Устанавливает запрет на изменение видимости заданных колонок в заданной коллекции колонок
		// табличного поля
		//
		// Параметры:
		//  Колонки          - коллекция колонок табличного поля,
		//  СтруктураКолонок - структура, содержащая имена колонок, видимость которых отключить нельзя
		//

		public void УстановитьИзменятьВидимостьКолонокТабЧасти(/*Колонки, СтруктураКолонок*/)
		{
			/*// устанавливаем стандартные запреты на изменение видимости колонок
*/
		}
		// УстановитьИзменятьВидимостьКолонокТабЧасти()

		public void ПередЗаписьюДокументаЗаполнитьФизЛицоВТабличнойЧасти(/*Источник, Отказ, РежимЗаписи, РежимПроведения*/)
		{
			if(true/*Источник.ОбменДанными.Загрузка*/)
			{
			}
			//СоответствиеСотрудникФизлицо = Новый Соответствие;
			//ПустоеФизлицо = Справочники.ФизическиеЛица.ПустаяСсылка();
			//ПустойСотрудник = Справочники.СотрудникиОрганизаций.ПустаяСсылка();
			//МассивСотрудников = Новый Массив;
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("СписокСотрудников", МассивСотрудников);
			/*Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	СотрудникиОрганизаций.Физлицо,
	|	СотрудникиОрганизаций.Ссылка КАК Сотрудник
	|ИЗ
	|	Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
	|ГДЕ
	|	СотрудникиОрганизаций.Ссылка В(&СписокСотрудников)";*/
			//Выборка = Запрос.Выполнить().Выбрать();
			while(true/*Выборка.Следующий()*/)
			{
				//СоответствиеСотрудникФизлицо.Вставить(Выборка.Сотрудник, Выборка.Физлицо);
			}
			/*// Заполним табличную часть ФизическиеЛица
*/
			//ЗаполнитьТабличнуюЧастьФизическиеЛица(Источник, Отказ, РежимЗаписи, РежимПроведения);
		}
		// ПередЗаписьюДокументаЗаполнитьФизЛицоВТабличнойЧасти()

		public void ЗаполнитьТабличнуюЧастьФизическиеЛица(/*Источник, Отказ, РежимЗаписи, РежимПроведения*/)
		{
			if(true/*Источник.Метаданные().ТабличныеЧасти.Найти("ФизическиеЛица") = Неопределено*/)
			{
			}
			//СоответствиеФизлица = Новый Соответствие;
			//ОбработкаТабличныхЧастейПереопределяемый.ПолучитьФизлицИзДополнительныхТабличныхЧастей(Источник, Отказ, РежимЗаписи, РежимПроведения, СоответствиеФизлица);
			//Формировать = Ложь;
			if(true/*СоответствиеФизлица.Количество() = Источник.ФизическиеЛица.Количество()*/)
			{
			}
			if(true/*Формировать*/)
			{
				//Источник.ФизическиеЛица.Очистить();
			}
		}
		// Изменяет видимость колонки табличного поля (напрмер, табличной части документа).
		//
		// Параметры:
		//  Колонка   - колонка табличного поля,
		//  Видимость - булево, устанавливаемый флаг видимости колонки.
		//

		public void УстановитьВидимостьКолонкиТабЧасти(/*Колонка, Видимость*/)
		{
			//Колонка.Видимость = Видимость;
		}
		// УстановитьВидимостьКолонкиТабЧасти()
		// Процедура заполняет Содержание из полного наименования номенклатуры в строке табличной части
		//
		// Параметры
		//  СтрокаТабличнойЧасти - Строка табличной части
		//

		public void ЗаполнитьСодержаниеТабЧасти(/*СтрокаТабличнойЧасти, Документобъект*/)
		{
			//ИмяТабличнойЧасти   = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Содержание", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
			{
				//НаименованиеПолное = СтрокаТабличнойЧасти.Номенклатура.НаименованиеПолное;
				if(true/*ПустаяСтрока(НаименованиеПолное)*/)
				{
					//СтрокаТабличнойЧасти.Содержание = СтрокаТабличнойЧасти.Номенклатура.Наименование;
				}
			}
		}
		// ЗаполнитьСодержаниеТабЧасти()
		//Функция возвращает часть запроса для выбора поля содержания у Таб части Услуги документа

		public object ПолучитьЧастьЗапросаДляВыбораСодержания(/*Знач ИмяТаблицыВыбора, Знач ИтоговыйАлиасПоля = ""*/)
		{
			//СтрокаИмениТаблицыВыборки = "";
			if(true/*Не ПустаяСтрока(ИмяТаблицыВыбора)*/)
			{
				//СтрокаИмениТаблицыВыборки = ИмяТаблицыВыбора + ".";
			}
			/*ЧастьВыборки = "	Выбор 
	|		Когда НЕ (" + СтрокаИмениТаблицыВыборки + "Содержание Подобно """") Тогда
	|			ВЫРАЗИТЬ(" + СтрокаИмениТаблицыВыборки + "Содержание КАК Строка (1000))
	|		Когда НЕ (" + СтрокаИмениТаблицыВыборки + "Номенклатура.НаименованиеПолное Подобно """") Тогда
	|			ВЫРАЗИТЬ(" + СтрокаИмениТаблицыВыборки + "Номенклатура.НаименованиеПолное КАК Строка (1000))
	|		Иначе
	|			" + СтрокаИмениТаблицыВыборки + "Номенклатура.Наименование
	|	Конец";*/
			if(true/*Не ПустаяСтрока(ИтоговыйАлиасПоля)*/)
			{
				//ЧастьВыборки = ЧастьВыборки + " КАК " + ИтоговыйАлиасПоля;
			}
			return null;
		}
		// Процедура заполняет качество номенклатуры в строке табличной части
		//
		// Параметры
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа
		//

		public void ЗаполнитьКачествоНоменклатурыТабЧасти(/*СтрокаТабличнойЧасти, Документобъект*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Качество", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
			{
				if(true/*Не ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Номенклатура", МетаданныеДокумента, ИмяТабличнойЧасти)
		 Или Не СтрокаТабличнойЧасти.Номенклатура.Услуга*/)
				{
					//СтрокаТабличнойЧасти.Качество = Справочники.Качество.Новый;
				}
			}
		}
		// ЗаполнитьКачествоНоменклатурыТабЧасти()
		// Процедура заполняет склад и оредер в строке табличной части по реквизитам шапки документа
		//

		public void ЗаполнитьСкладИОрдерТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, СкладИзШапки = Ложь*/)
		{
			if(true/*ДокументОбъект.ВидПоступления = Перечисления.ВидыПоступленияТоваров.ПоОрдеру*/)
			{
				if(true/*ЗначениеЗаполнено(ДокументОбъект.СкладОрдер)*/)
				{
					if(true/*НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ПриходныйОрдер)*/)
					{
						//СтрокаТабличнойЧасти.ПриходныйОрдер = ДокументОбъект.СкладОрдер;
					}
					if(true/*СкладИзШапки*/)
					{
						if(true/*СтрокаТабличнойЧасти.Склад <> ДокументОбъект.СкладОрдер.Склад*/)
						{
							//СтрокаТабличнойЧасти.Склад = ДокументОбъект.СкладОрдер.Склад;
						}
					}
				}
			}
		}
		// ЗаполнитьСкладИОрдерТабЧасти()
		// Процедура заполняет склад и оредер по реквизитам шапки документа во всех строках
		// заданной табличной части, в которых эти реквизиты не заполнены табличной части
		//

		public void ЗаполнитьСкладИОрдерВСтрокахТабЧасти(/*ДокументОбъект, ТабЧасть, СкладИзШапки = Ложь*/)
		{
		}
		// Процедура заполняет реквизит качество в табличной части документа
		//

		public void ЗаполнитьКачествоПоУмолчанию(/*ТабЧасть, ЗаполнитьВсеСтрокиНовый = Ложь*/)
		{
		}
		// Процедура очищает значение нужного реквизита в переданной ТЧ.
		//
		// Параметры:
		//  ТабЧаст      - табличная часть,
		//  ИмяРеквизита - строка, имя реквизита.
		//

		public void ОчиститьРеквизитТЧ(/*ТабЧасть, ИмяРеквизита*/)
		{
		}
		//ОчиститьРеквизитТЧ()
		//Функция получает таблицу для расчета остатков при подборе номенклатуры, используется для расчета резерва товаров по документу резерва
		//Параметры:
		//    ДокументФорма                    - Форма, Форма документа
		//    ЕстьЗаказВТабличнойЧасти         - Булево, флаг есть реквизит в табличной части!!!! Если в функцию передать Истина, нужно установить параметр ИмяРеквизитаЗаказаВШапке
		//    ВидРегистраПлюсСвободныйОстаток  - Строка, имя регистра накопления, остатки которого прибавляются к свободным остаткам
		//    НазваниеПоляРезерваВРегистре     - Строка, имя измерения в регистре, необходимо для получения типов значения и формирования таблицы значения для табличной части документа
		//    ИмяРеквизитаЗаказаВШапке         - Строка, Имя реквизита в шапке документа. Необходимо для заполнения в таблице значений поля заказ, если в константе указано, что заказ указывается в шапке документов.
		//    ИмяКолонкиРезерваВТабличнойЧасти - Строка, Имя колонки заказа в табличной части документа
		//    ИспользоватьЗначениеКонстанты    - Булево, Истина - анализировать константу УказаниеЗаказовВТабличнойЧастиДокументов, Ложь заказ всегда в табличной части.
		//Возварщаемое значение: Структура

		public object СтруктураДляРасчетаРезерваПриПодбореНоменклатуры(/*ДокументФорма, ЕстьЗаказВТабличнойЧасти = Ложь, ИмяРеквизитаЗаказаВШапке = "", ВидРегистраПлюсСвободныйОстаток = "ТоварыВРезервеНаСкладах", НазваниеПоляРезерваВРегистре = "ДокументРезерва", ИмяКолонкиРезерваВТабличнойЧасти = "ЗаказПокупателя", ИспользоватьЗначениеКонстанты = Истина*/)
		{
			/*//создается таблица тчТовары которая возвращается функцией и эта таблица будет использована в запросе
*/
			/*//в модуле обработки подбор номенклатуры для расчета резерва, как вложенная таблица.
*/
			//СтруктураВременныеТаблицы = Новый Структура();
			//СтруктураДляЗаказа = Новый Структура;
			//значениеКонстанты = Константы.УказаниеЗаказовВТабличнойЧастиДокументов.Получить();
			//тчТовары = Новый ТаблицаЗначений;
			//тчТовары.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
			//тчТовары.Колонки.Добавить("ХарактеристикаНоменклатуры",Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
			//ИзмерениеДокументРезерва = Метаданные.РегистрыНакопления[ВидРегистраПлюсСвободныйОстаток].Измерения.Найти(НазваниеПоляРезерваВРегистре);
			//тчТовары.Колонки.Добавить("ДокументРезерва", Новый ОписаниеТипов(ИзмерениеДокументРезерва.Тип.Типы()));
			//ЗаказИзШапки = ложь;
			/*ЗаказИзШапки =	Перечисления.ВариантыУказанияЗаказовВТабличнойЧастиДокументов.НеИспользовать = значениеКонстанты
					ИЛИ
					Перечисления.ВариантыУказанияЗаказовВТабличнойЧастиДокументов.ДляДокументовПоступления = значениеКонстанты
					ИЛИ
					НЕ ЕстьЗаказВТабличнойЧасти;*/
			//ЗаказИзШапки = ?(ИспользоватьЗначениеКонстанты, ЗаказИзШапки, Ложь);
			//СтруктураДляЗаказа.Вставить("ЗаказИзШапки",ЗаказИзШапки);
			//СтруктураДляЗаказа.Вставить("ИмяВременнойТаблицы","ЗаказыТаблицаНоменклатура");
			//СтруктураВременнойТаблицы = Новый Структура;
			//СтруктураВременнойТаблицы.Вставить("Номенклатура","СправочникСсылка.Номенклатура");
			//СтруктураВременнойТаблицы.Вставить("ХарактеристикаНоменклатуры","СправочникСсылка.ХарактеристикиНоменклатуры");
			//СтруктураВременнойТаблицы.Вставить("ДокументРезерва","ДокументСсылка.ЗаказПокупателя");
			//СтруктураДляЗаказа.Вставить("СтруктураВременнойТаблицы",СтруктураВременнойТаблицы);
			if(true/*ЕстьЗаказВТабличнойЧасти*/)
			{
			}
			//тчТовары.Свернуть("Номенклатура, ХарактеристикаНоменклатуры, ДокументРезерва","");
			//СтруктураДляЗаказа.Вставить("ТаблицаИсточник",тчТовары);
			//СтруктураДляЗаказа.Вставить("ВидРегистраПлюсСвободныйОстаток", ВидРегистраПлюсСвободныйОстаток);
			//СтруктураВременныеТаблицы.Вставить("ДокументРеализацияТоваровИУслуг", СтруктураДляЗаказа);
			return null;
		}
		//СтруктураДляРасчетаРезерваПриПодбореНоменклатуры()
		// Формирует список значений реквизита табличной части документа.
		// Параметры:
		//  СписокЗначений    - список значений для добавления, если не передан, то создастся новый
		//  ТабличнаяЧасть    - табличная часть документа, из которой будут получены значения в список
		//  ИмяРеквизитаЗаказ - имя реквизита табличной части, значения которого будут получены
		// Возвращаемое значение:
		//  Список            - список значений, содержащий неповторяющиеся значения реквизита ТЧ
		//

		public object ПолучитьСписокЗначенийРеквизитаТЧ(/*ТабличнаяЧасть, ИмяРеквизита, СписокЗначений = Неопределено*/)
		{
			if(true/*СписокЗначений = Неопределено*/)
			{
				/*// Инициируем список
*/
				//СписокЗначений = Новый СписокЗначений;
			}
			if(true/*ТабличнаяЧасть.Количество() > 0*/)
			{
				/*// Получим таблицу заказов
*/
				//ТаблицаНоменклатуры = ТабличнаяЧасть.Выгрузить();
				//ТаблицаНоменклатуры.Свернуть(ИмяРеквизита);
				/*// Заполним список
*/
			}
			return null;
		}
		// ПолучитьСписокЗначенийРеквизитаТЧ()
		//возвращает значение реквизита в строке табличной части с проверкой на существование данного реквизита

		public object ПолучитьЗначениеРеквизитаТЧ(/*МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, ИмяРеквизита="ХарактеристикаНоменклатуры"*/)
		{
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента(ИмяРеквизита, МетаданныеДокумента, ИмяТабличнойЧасти)*/)
			{
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ОБРАБОТКИ РАСЧЕТА СКИДОК ТАБЛИЧНОЙ ЧАСТИ ТОРГОВЫХ ДОКУМЕНТОВ
		// Процедура получает минимально допустимую цену товаров (услуг) для данного пользователя.
		//
		// Параметры:
		//  Номенклатура               - элемент справочника "Номенклатура",
		//  ХарактеристикаНоменклатуры - элемент справочника "ХарактеристикиНоменклатуры",
		//  ДокументОбъект             - документ, для которого проверяем скидки,
		//  МинимальнаяЦена            - минимально допустимая цена.
		//

		public object ПолучитьМинимальнуюЦену(/*Номенклатура, ХарактеристикаНоменклатуры,
	                              ДатаСкидок, СписокФильтров, ВалютаТовара, ЕдиницаИзмерения*/)
		{
			//МинимальнаяЦена = 0;
			/*// Если нет данных для формирования текста запроса (пустой список фильтров),
*/
			/*// то значит можно продавать по любой цене.
*/
			return null;
		}
		// ПолучитьМинимальнуюЦену()
		// Процедура проверяет минимально допустимую цену товаров (услуг) для данного пользователя по выбранной строке
		// и корректирует суммы скидок. При расчете итоговой суммы рассчитывает НДС.
		//
		// Параметры:
		//  ДокументОбъект             - документ, для которого проверяем скидки,
		//  ТабличнаяЧастьНоменклатуры - табличная часть номенклатуры документа,
		//  ТабличнаяЧастьСкидок       - табличная часть автоматических скидок документа.
		//  УчитыватьНДС               - булево, признак учета НДС в документе, служит для расчета сумм НДС,
		//  СуммаВключаетНДС           - булево, признак вхождения НДС в сумму в документе, служит для расчета сумм НДС.
		//

		public void ПроверкаМинимальнойЦены(/*ДатаСкидок, ТаблицаТоваров, МинимальныеЦены,
                                  СписокФильтров, УчитыватьНДС, СуммаВключаетНДС, ВалютаТовара*/)
		{
			if(true/*МинимальныеЦены = Неопределено*/)
			{
				//МинимальныеЦены = Новый ТаблицаЗначений;
				//МинимальныеЦены.Колонки.Добавить("Номенклатура");
				//МинимальныеЦены.Колонки.Добавить("ХарактеристикаНоменклатуры");
				//МинимальныеЦены.Колонки.Добавить("ЕдиницаИзмерения");
				//МинимальныеЦены.Колонки.Добавить("Цена");
				//МинимальныеЦены.Индексы.Добавить("Номенклатура, ХарактеристикаНоменклатуры, ЕдиницаИзмерения");
			}
			//Отбор = Новый Структура ("Номенклатура, ХарактеристикаНоменклатуры, ЕдиницаИзмерения");
			//ЕстьЕдиница = (ТаблицаТоваров.Колонки.Найти("ЕдиницаИзмерения") <> Неопределено);
		}
		// ПроверкаМинимальнойЦены()
		// Функция получает период для расчета накопительных скидок.
		//
		// Параметры:
		//  ДатаСкидок - Дата, на которую рассчитываются скидки.
		//  УчетнаяПолитика - Структура, содержащая данные учетной политики.
		//
		// Возвращаемое значение:
		//  Структура - структура с ключами "ДатаНач" и "ДатаКон", начало и конец периода.
		//

		public object ПолучитьПериодРасчетаНакопительныхСкидок(/*ДатаСкидок, УчетнаяПолитика*/)
		{
			//ПериодНакопления = Новый Структура("ДатаНач, ДатаКон");
			//ТекПериодичность = УчетнаяПолитика.ПериодичностьРасчетаНакопленияСкидок;
			//ТекПрошлыйПериод = УчетнаяПолитика.АнализироватьПрошлыйПериодНакопленияСкидок;
			if(true/*ТекПериодичность = Перечисления.ПериодичностьНакопленияСкидок.ВТечениеВсегоПериода*/)
			{
				//ПериодНакопления.ДатаНач = '00010101';
				//ПериодНакопления.ДатаКон = КонецДня(ДатаСкидок);
			}
			return null;
		}
		// ПолучитьПериодРасчетаНакопительныхСкидок()
		// Функция возвращает таблицу значений, выгруженную из результата запроса по скидкам.
		//
		// Параметры:
		//  ДатаСкидок - дата, на которую необходимо рассчитать скидки.
		//  МассивНоменклатуры - массив с номенклатурой.
		//  МассивХарактеристик - массив с характеристиками номенклатуры.
		//  МассивКачество - массив с качеством.
		//  МассивПолучателей - массив с получателями скидки.
		//  КурсКратность - Кратность валюты документа / курс валюты документа.
		//  СуммаДокумента - сумма документа.
		//  ВидОплаты - вид оплаты.
		//  ДисконтнаяКарта - дисконтная карта.
		//  УчетнаяПолитика - структура, содержащая данные учетной политики.
		//
		// Возвращаемое значение:
		//  ТаблицаЗначений.
		//

		public object ЗапросПоСкидкам(/*ДатаСкидок, МассивНоменклатуры, МассивХарактеристик, МассивКачество,
	МассивПолучателей, КурсКратность, СуммаДокумента, ВидОплаты, ДисконтнаяКарта, УчетнаяПолитика*/)
		{
			if(true/*ЗначениеЗаполнено(ДисконтнаяКарта)
	   И УчетнаяПолитика.ИспользоватьСкидкиПоДисконтнойКарте
	   И УчетнаяПолитика.ИспользоватьНакопительныеСкидкиПоДисконтнымКартам
	   И УчетнаяПолитика.СпособИспользованияНакопительныхСкидок = Перечисления.СпособыИспользованияНакопительныхСкидок.СкидкиНакапливаютсяПоДисконтнойКарте*/)
			{
				//ЭтоНакопительнаяСкидка = Истина;
			}
			if(true/*ЭтоНакопительнаяСкидка*/)
			{
				//ПериодНакопления = ПолучитьПериодРасчетаНакопительныхСкидок(ДатаСкидок, УчетнаяПолитика);
				/*Запрос = Новый Запрос("
		|ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	РегПороги.ЗначениеПорога КАК ЗначениеПорога
		|ИЗ
		|	(ВЫБРАТЬ
		|		ЕСТЬNULL(СУММА(РегПродажи.СуммаОборот), 0) КАК СуммаОборот
		|	ИЗ
		|		РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(&ДатаНач, &ДатаКон, ,
		|		   ДисконтнаяКарта = &ДисконтнаяКарта) КАК РегПродажи
		|	) КАК РегПродажи
		|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		|	(ВЫБРАТЬ
		|		Пороги.НижняяГраница,
		|		Пороги.ЗначениеПорога
		|	ИЗ
		|		РегистрСведений.ПорогиНакопительныхСкидок.СрезПоследних(&ДатаКон) КАК Пороги
		|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		|		(ВЫБРАТЬ
		|			МАКСИМУМ(ПорогиМакс.Период) КАК Период
		|		ИЗ
		|			РегистрСведений.ПорогиНакопительныхСкидок.СрезПоследних(&ДатаКон) КАК ПорогиМакс
		|	) КАК ПорогиМакс
		|	ПО
		|		Пороги.Период = ПорогиМакс.Период
		|) КАК РегПороги
		|ПО
		|	РегПороги.НижняяГраница <= РегПродажи.СуммаОборот
		|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		|	(ВЫБРАТЬ
		|		МАКСИМУМ(РегПороги.НижняяГраница) КАК НижняяГраница
		|	ИЗ
		|		(ВЫБРАТЬ
		|			ЕСТЬNULL(СУММА(РегПродажи.СуммаОборот), 0) КАК СуммаОборот
		|		ИЗ
		|			РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(&ДатаНач, &ДатаКон, ,
		|			   ДисконтнаяКарта = &ДисконтнаяКарта) КАК РегПродажи
		|		) КАК РегПродажи
		|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		|		(ВЫБРАТЬ
		|			Пороги.НижняяГраница
		|		ИЗ
		|			РегистрСведений.ПорогиНакопительныхСкидок.СрезПоследних(&ДатаКон) КАК Пороги
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		|			(ВЫБРАТЬ
		|				МАКСИМУМ(ПорогиМакс.Период) КАК Период
		|			ИЗ
		|				РегистрСведений.ПорогиНакопительныхСкидок.СрезПоследних(&ДатаКон) КАК ПорогиМакс
		|			) КАК ПорогиМакс
		|		ПО
		|			Пороги.Период = ПорогиМакс.Период
		|		) КАК РегПороги
		|	ПО
		|		РегПороги.НижняяГраница <= РегПродажи.СуммаОборот
		|	) КАК РегПорогиМакс
		|ПО
		|	РегПорогиМакс.НижняяГраница = РегПороги.НижняяГраница
		|");*/
				//Запрос.УстановитьПараметр("ДатаНач", ПериодНакопления.ДатаНач);
				//Запрос.УстановитьПараметр("ДатаКон", ПериодНакопления.ДатаКон);
				//Запрос.УстановитьПараметр("ДисконтнаяКарта", ДисконтнаяКарта);
				//Выборка = Запрос.Выполнить().Выбрать();
				if(true/*Выборка.Следующий()*/)
				{
					//ПроцентНакопительнойСкидки = Выборка.ЗначениеПорога;
				}
			}
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("Дата"                     , ДатаСкидок);
			//Запрос.УстановитьПараметр("МассивНоменклатуры"       , МассивНоменклатуры);
			//Запрос.УстановитьПараметр("МассивХарактеристик"      , МассивХарактеристик);
			//Запрос.УстановитьПараметр("МассивКачество"           , МассивКачество);
			//Запрос.УстановитьПараметр("МассивПолучателей"        , МассивПолучателей);
			//Запрос.УстановитьПараметр("ДеньНедели"               , Перечисления.ДниНедели[ДеньНедели(ДатаСкидок) - 1]);
			//Запрос.УстановитьПараметр("ТекущееВремя"             , Дата(1, 1, 1, Час(ДатаСкидок), Минута(ДатаСкидок), Секунда(ДатаСкидок)));
			//Запрос.УстановитьПараметр("КурсКратность"            , КурсКратность);
			//Запрос.УстановитьПараметр("Сумма"                    , СуммаДокумента);
			//Запрос.УстановитьПараметр("ВидОплаты"                , ВидОплаты);
			//Запрос.УстановитьПараметр("ДисконтнаяКарта"          , ДисконтнаяКарта);
			//Запрос.УстановитьПараметр("ВидДисконтнойКарты"       , ДисконтнаяКарта.ВидДисконтнойКарты);
			if(true/*ЭтоНакопительнаяСкидка*/)
			{
				//Запрос.УстановитьПараметр("ПроцентНакопительнойСкидки" , ПроцентНакопительнойСкидки);
			}
			/*ТекстЗапроса = "
	|	ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	СпрНоменклатура.Номенклатура КАК Номенклатура,
	|	СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	СпрКачество.Ссылка КАК Качество,
	|	РегСкидкиНоменклатуры.Условие КАК НУсловие,
	|	РегСкидкиНоменклатуры.ЗначениеУсловия КАК НЗначениеУсловия,
	|	РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки КАК НОграничениеСкидкиНаценки,
	|	" + ?(ЭтоНакопительнаяСкидка, "ВЫБОР КОГДА РегСкидкиНоменклатуры.ПроцентСкидкиНаценки ЕСТЬ НЕ NULL
	|	И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте)
	|	ИЛИ РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт)) ТОГДА &ПроцентНакопительнойСкидки ИНАЧЕ РегСкидкиНоменклатуры.ПроцентСкидкиНаценки КОНЕЦ", "РегСкидкиНоменклатуры.ПроцентСкидкиНаценки") + " КАК НПроцентСкидкиНаценки,
	|	РегСкидкиПоЦеновымГруппам.Условие КАК ЦУсловие,
	|	РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЦЗначениеУсловия,
	|	РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки КАК ЦОграничениеСкидкиНаценки,
	|	" + ?(ЭтоНакопительнаяСкидка, "ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки ЕСТЬ НЕ NULL
	|	И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте)
	|	ИЛИ РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт)) ТОГДА &ПроцентНакопительнойСкидки ИНАЧЕ РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки КОНЕЦ", "РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки") + " КАК ЦПроцентСкидкиНаценки
	|ИЗ
	|	(ВЫБРАТЬ
	|		СпрНоменклатура.Ссылка КАК Номенклатура,
	|		ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
	|	ИЗ
	|		Справочник.Номенклатура КАК СпрНоменклатура
	|	ГДЕ
	|		СпрНоменклатура.Ссылка В (&МассивНоменклатуры)
	|	ОБЪЕДИНИТЬ ВСЕ
	|	ВЫБРАТЬ
	|		СпрХарактеристики.Владелец,
	|		СпрХарактеристики.Ссылка
	|	ИЗ
	|		Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
	|	ГДЕ
	|		СпрХарактеристики.Ссылка В (&МассивХарактеристик)
	|	ОБЪЕДИНИТЬ ВСЕ
	|	ВЫБРАТЬ
	|		ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка),
	|		ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
	|	) КАК СпрНоменклатура
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	|		Справочник.Качество КАК СпрКачество
	|	ПО
	|	СпрКачество.Ссылка В (&МассивКачество)
	|ЛЕВОЕ СОЕДИНЕНИЕ
	|	(ВЫБРАТЬ
	|		РегСкидкиНоменклатуры.Номенклатура,
	|		РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
	|		РегСкидкиНоменклатуры.Качество,
	|		РегСкидкиНоменклатуры.Условие,
	|		ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
	|			ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
	|		ИНАЧЕ
	|			РегСкидкиНоменклатуры.ЗначениеУсловия
	|		КОНЕЦ КАК ЗначениеУсловия,
	|		МАКСИМУМ(РегСкидкиНоменклатуры.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
	|		РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
	|	ИЗ
	|		РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних(&Дата,
	|		   Номенклатура В (&МассивНоменклатуры)
	|		   И Качество В (&МассивКачество)
	|		   И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиНоменклатуры
	|	ЛЕВОЕ СОЕДИНЕНИЕ
	|		РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
	|	ПО
	|		РегСкидкиНоменклатуры.Регистратор = ВремяДействия.Регистратор
	|	ЛЕВОЕ СОЕДИНЕНИЕ
	|		РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
	|	ПО
	|		РегСкидкиНоменклатуры.Валюта = КурсыВалют.Валюта
	|	ГДЕ
	|		(ВремяДействия.ДеньНедели ЕСТЬ NULL
	|		   ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
	|		   И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
	|		   И РегСкидкиНоменклатуры.Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
	//|		   И РегСкидкиНоменклатуры.ПроцентСкидкиНаценки <> 0
	|		   И (РегСкидкиНоменклатуры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиНоменклатуры.ДатаОкончания, ДЕНЬ) >= &Дата)
	|		   И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
	|		   И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
	|		   И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
	|		   И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
	|	СГРУППИРОВАТЬ ПО
	|		РегСкидкиНоменклатуры.Номенклатура,
	|		РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
	|		РегСкидкиНоменклатуры.Качество,
	|		РегСкидкиНоменклатуры.Условие,
	|		ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
	|			ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
	|		ИНАЧЕ
	|			РегСкидкиНоменклатуры.ЗначениеУсловия
	|		КОНЕЦ,
	|		РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
	|	) КАК РегСкидкиНоменклатуры
	|ПО
	|	СпрНоменклатура.Номенклатура = РегСкидкиНоменклатуры.Номенклатура
	|	   И (СпрНоменклатура.ХарактеристикаНоменклатуры = РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры ИЛИ РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
	|	   И СпрКачество.Ссылка = РегСкидкиНоменклатуры.Качество
	|ЛЕВОЕ СОЕДИНЕНИЕ
	|	(ВЫБРАТЬ
	|		РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
	|		РегСкидкиПоЦеновымГруппам.Качество,
	|		РегСкидкиПоЦеновымГруппам.Условие,
	|		ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
	|			ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
	|		ИНАЧЕ
	|			РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
	|		КОНЕЦ КАК ЗначениеУсловия,
	|		МАКСИМУМ(РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
	|		РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
	|	ИЗ
	|		РегистрСведений.СкидкиНаценкиПоЦеновымГруппам.СрезПоследних(&Дата, Качество В (&МассивКачество) И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиПоЦеновымГруппам
	|	ЛЕВОЕ СОЕДИНЕНИЕ
	|		РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
	|	ПО
	|		РегСкидкиПоЦеновымГруппам.Регистратор = ВремяДействия.Регистратор
	|	ЛЕВОЕ СОЕДИНЕНИЕ
	|		РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
	|	ПО
	|		РегСкидкиПоЦеновымГруппам.Валюта = КурсыВалют.Валюта
	|	ГДЕ
	|		(ВремяДействия.ДеньНедели ЕСТЬ NULL
	|		   ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
	|		   И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
	|		   И РегСкидкиПоЦеновымГруппам.Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
	//|		   И РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки <> 0
	|		   И(РегСкидкиПоЦеновымГруппам.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиПоЦеновымГруппам.ДатаОкончания, ДЕНЬ) >= &Дата)
	|		   И(РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
	|		   И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
	|		   И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
	|		   И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
	|	СГРУППИРОВАТЬ ПО
	|		РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
	|		РегСкидкиПоЦеновымГруппам.Качество,
	|		РегСкидкиПоЦеновымГруппам.Условие,
	|		ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
	|			ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
	|		ИНАЧЕ
	|			РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
	|		КОНЕЦ,
	|		РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
	|	) КАК РегСкидкиПоЦеновымГруппам
	|ПО
	|	СпрНоменклатура.Номенклатура.ЦеноваяГруппа = РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа
	|	   И СпрКачество.Ссылка = РегСкидкиПоЦеновымГруппам.Качество
	|ГДЕ
	|	РегСкидкиНоменклатуры.Условие ЕСТЬ НЕ NULL
	|	ИЛИ РегСкидкиПоЦеновымГруппам.Условие ЕСТЬ НЕ NULL
	|";*/
			//Запрос.Текст = ТекстЗапроса;
			return null;
		}
		// ЗапросПоСкидкам()
		// Процедура рассчитывает скидки в документе.
		//
		// Параметры:
		//  ДокументОбъект             - документ, для которого рассчитываем скидки,
		//  ТабличнаяЧастьНоменклатуры - табличная часть номенклатуры документа,
		//  ТабличнаяЧастьСкидок       - табличная часть автоматических скидок документа.
		//  СтруктураПараметров        - структура, содержащая дополнительные параметря, необходимые для расчета скидок.
		//

		public void РассчитатьСкидкиПриПродаже(/*ДокументОбъект, ТабличнаяЧастьНоменклатуры,
	                                 СтруктураПараметров, МинимальныеЦены, СписокФильтров*/)
		{
			if(true/*ТабличнаяЧастьНоменклатуры.Количество() = 0*/)
			{
			}
			if(true/*ТипЗнч (ТабличнаяЧастьНоменклатуры) = Тип("ТаблицаЗначений")*/)
			{
				//ТаблицаТоваров = ТабличнаяЧастьНоменклатуры.Скопировать();
			}
			//ТаблицаТоваров.ЗаполнитьЗначения(0, "ПроцентАвтоматическихСкидок");
			//ТаблицаТоваров.ЗаполнитьЗначения(Перечисления.УсловияСкидкиНаценки.ПустаяСсылка(),"УсловиеАвтоматическойСкидки");
			//ТаблицаТоваров.ЗаполнитьЗначения(Неопределено,"ЗначениеУсловияАвтоматическойСкидки");
			if(true/*ТаблицаТоваров.Колонки.Найти("Коэффициент") = Неопределено*/)
			{
				//ТаблицаТоваров.Колонки.Добавить("Коэффициент");
				//ТаблицаТоваров.ЗаполнитьЗначения(1, "Коэффициент");
			}
			//ТаблицаТоваров.Колонки.Добавить("СуммаБезСкидки");
			//СтруктураПараметров.Свойство("ВидРеализации"                 , ВидРеализации);
			//СтруктураПараметров.Свойство("ДатаСкидок"                    , ДатаСкидок);
			//СтруктураПараметров.Свойство("ВалютаРегламентированногоУчета", ВалютаРегламентированногоУчета);
			//СтруктураПараметров.Свойство("ВидОплаты"                     , ВидОплаты);
			//СтруктураПараметров.Свойство("СуммаДокумента"                , СуммаДокумента);
			//СтруктураПараметров.Свойство("Карта"                         , ДиконтнаяКарта);
			//СтруктураПараметров.Свойство("УчитыватьНДС"                  , УчитыватьНДС);
			//СтруктураПараметров.Свойство("СуммаВключаетНДС"              , СуммаВключаетНДС);
			//СтруктураПараметров.Свойство("УчетнаяПолитика"              , УчетнаяПолитика);
			//УчитыватьНДС = ?(УчитыватьНДС = Неопределено, Ложь, УчитыватьНДС);
			//ДатаСкидок = ?(НЕ ЗначениеЗаполнено(ДатаСкидок), ДокументОбъект.Дата, ДатаСкидок);
			//МассивНоменклатуры = ТаблицаТоваров.ВыгрузитьКолонку("Номенклатура");
			//МассивНоменклатуры.Добавить(Справочники.Номенклатура.ПустаяСсылка());
			if(true/*ТаблицаТоваров.Колонки.Найти("ХарактеристикаНоменклатуры") = Неопределено*/)
			{
				//МассивХарактеристик = Новый Массив;
				//ТаблицаТоваров.Колонки.Добавить("ХарактеристикаНоменклатуры");
				//ТаблицаТоваров.ЗаполнитьЗначения(Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка(), "ХарактеристикаНоменклатуры");
			}
			//МассивХарактеристик.Добавить(Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
			if(true/*ТаблицаТоваров.Колонки.Найти("Качество") = Неопределено*/)
			{
				//МассивКачество = Новый Массив;
				//МассивКачество.Добавить(Справочники.Качество.Новый);
				//ТаблицаТоваров.Колонки.Добавить("Качество");
				//ТаблицаТоваров.ЗаполнитьЗначения(Справочники.Качество.Новый, "Качество");
			}
			//МассивПолучателей = Ценообразование.ПолучитьМассивПолучателейСкидки(ВидРеализации, ДокументОбъект);
			if(true/*ВидРеализации = Перечисления.ВидыСкидок.Розничная*/)
			{
				//КурсКратность = 1;
			}
			/*ТаблицаСкидок = ЗапросПоСкидкам(ДатаСкидок, МассивНоменклатуры, МассивХарактеристик, МассивКачество,
	МассивПолучателей, КурсКратность, СуммаДокумента, ВидОплаты, ДиконтнаяКарта, УчетнаяПолитика);*/
			//ТаблицаСкидок.Индексы.Добавить("Номенклатура, Качество");
			//ПустаяНоменклатура = Справочники.Номенклатура.ПустаяСсылка();
			//ПустаяХарактеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
			//УсловиеКолво = Перечисления.УсловияСкидкиНаценки.ПоКоличествуТовара;
			if(true/*ТаблицаСкидок.Найти(УсловиеКолво, "НУсловие, ЦУсловие") <> Неопределено*/)
			{
				/*ТаблицаКоличестваТоваров = ТаблицаТоваров.Скопировать(,
		   "Номенклатура, ХарактеристикаНоменклатуры, Количество, Коэффициент");*/
				//ТаблицаКоличестваТоваров.Свернуть("Номенклатура, ХарактеристикаНоменклатуры", "Количество");
				//ТаблицаКоличестваТоваров.Индексы.Добавить("Номенклатура, ХарактеристикаНоменклатуры");
				//СтруктураПоискаКоличества = Новый Структура("Номенклатура, ХарактеристикаНоменклатуры");
			}
			//СтруктураПоиска = Новый Структура("Номенклатура, Качество");
			/*ВалютаТовара = ?(ВидРеализации = Перечисления.ВидыСкидок.Розничная,
	                 ВалютаРегламентированногоУчета, ДокументОбъект.ВалютаДокумента);*/
			/*ПроверкаМинимальнойЦены(ДатаСкидок, ТаблицаТоваров, МинимальныеЦены, СписокФильтров,
	   УчитыватьНДС, СуммаВключаетНДС, ВалютаТовара);*/
			//ТабличнаяЧастьНоменклатуры.ЗагрузитьКолонку(ТаблицаТоваров.ВыгрузитьКолонку("ПроцентАвтоматическихСкидок"), "ПроцентАвтоматическихСкидок");
			//ТабличнаяЧастьНоменклатуры.ЗагрузитьКолонку(ТаблицаТоваров.ВыгрузитьКолонку("Сумма"), "Сумма");
			//ТабличнаяЧастьНоменклатуры.ЗагрузитьКолонку(ТаблицаТоваров.ВыгрузитьКолонку("УсловиеАвтоматическойСкидки"), "УсловиеАвтоматическойСкидки");
			//ТабличнаяЧастьНоменклатуры.ЗагрузитьКолонку(ТаблицаТоваров.ВыгрузитьКолонку("ЗначениеУсловияАвтоматическойСкидки"), "ЗначениеУсловияАвтоматическойСкидки");
			if(true/*УчитыватьНДС*/)
			{
				//ТабличнаяЧастьНоменклатуры.ЗагрузитьКолонку(ТаблицаТоваров.ВыгрузитьКолонку("СуммаНДС"), "СуммаНДС");
			}
		}
		// РассчитатьСкидкиПриПродаже()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ОБРАБОТКИ РАСЧЕТА ТАБЛИЧНОЙ ЧАСТИ ТОРГОВЫХ ДОКУМЕНТОВ
		// Процедура заполняет ставку НДС в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти     - строка табличной части документа,
		//  ДокументОбъект           - объект редактируемого документа.
		//

		public void ЗаполнитьСтавкуНДСТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, ВидДокумента = ""*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//РеквизитыТабличнойЧасти = Новый Массив;
			//ОписаниеТиповТабличнаяЧастьОбработки = Новый ОписаниеТипов("ОбработкаТабличнаяЧастьСтрока.ОбработкаТабличнойЧастиТовары.Товары");
			if(true/*ОписаниеТиповТабличнаяЧастьОбработки.СодержитТип(ТипЗнч(СтрокаТабличнойЧасти))*/)
			{
				/*//Передана строка табличной части обработки ОбработкаТабличнойЧастиТовары
*/
				//РеквизитыТабличнойЧасти = Метаданные.Обработки.ОбработкаТабличнойЧастиТовары.ТабличныеЧасти.Товары.Реквизиты;
			}
			/*//Заполнить СтавкаНДС
*/
			if(true/*РеквизитыТабличнойЧасти.Найти("СтавкаНДС")<>неопределено*/)
			{
				//НеЯвляетсяРезидентом = ?(МетаданныеДокумента.Реквизиты.Найти("Контрагент") <> Неопределено И ТипЗнч(ДокументОбъект.Контрагент) = Тип("СправочникСсылка.Контрагенты"), ?(ДокументОбъект.Контрагент.НеЯвляетсяРезидентом = Истина, Истина, Ложь), Ложь);
				//ЕстьДоговорКонтрагента = МетаданныеДокумента.Реквизиты.Найти("ДоговорКонтрагента") <> Неопределено;
				if(true/*ЕстьДоговорКонтрагента*/)
				{
					//ТекДоговорКонтрагента = ДокументОбъект.ДоговорКонтрагента;
				}
				//РеализацияНаЭкспорт = ?(ЕстьДоговорКонтрагента, ?(ТекДоговорКонтрагента.РеализацияНаЭкспорт = Истина, Истина, Ложь), Ложь);
				//НалоговыйАгентНерезидент = ?(ЕстьДоговорКонтрагента, ?(ТекДоговорКонтрагента.УчетАгентскогоНДС = Истина И ТекДоговорКонтрагента.ВидАгентскогоДоговора = Перечисления.ВидыАгентскихДоговоров.Нерезидент, Истина, Ложь), Ложь);
				if(true/*НеЯвляетсяРезидентом И Не НалоговыйАгентНерезидент И ВидДокумента = "Приобретение"*/)
				{
					//СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
				}
				//ЕстьОрганизация = (НЕ МетаданныеДокумента.Реквизиты.Найти("Организация") = Неопределено);
				//ЕстьСчетДоходовБУ = (РеквизитыТабличнойЧасти.Найти("СчетДоходовБУ")<>неопределено);
				//ЭтоРеализация = ЕстьСчетДоходовБУ ИЛИ РеквизитыТабличнойЧасти.Найти("ПроцентСкидкиНаценки")<>неопределено;
				/*//В документах реализации, для организаций применяющих УСН устанавливать ставку "БезНДС"
*/
				if(true/*ЭтоРеализация*/)
				{
					if(true/*ЕстьОрганизация*/)
					{
						//УчетнаяПолитика = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитикиРегл(ДокументОбъект.Дата, ДокументОбъект.Организация);
						if(true/*ЗначениеЗаполнено(УчетнаяПолитика) И (УчетнаяПолитика.СистемаНалогообложения = Перечисления.СистемыНалогообложения.Упрощенная)*/)
						{
							//СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
						}
					}
					/*//В документах реализации, для ЕНВД устанавливать ставку "БезНДС"
*/
					//ЕстьСчетДоходовБУ = ?(ЕстьСчетДоходовБУ, ЗначениеЗаполнено(СтрокаТабличнойЧасти.СчетДоходовБУ), Ложь);
					if(true/*ЕстьСчетДоходовБУ*/)
					{
						/*//Определяем вид деятельности по счету доходов
*/
						if(true/*НалоговыйУчетУСН.ОтноситсяКДеятельностиЕНВД(СтрокаТабличнойЧасти.СчетДоходовБУ)*/)
						{
							//СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
						}
					}
				}
			}
		}
		// ЗаполнитьСтавкуНДСТабЧасти()
		// Процедура заполняет способ списания товаров в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти     - строка табличной части документа,
		//  ДокументОбъект           - объект редактируемого документа.
		//

		public void ЗаполнитьСпособСписанияОстаткаТоваровТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			//СтрокаТабличнойЧасти.СпособСписанияОстаткаТоваров = Перечисления.СпособыСписанияОстаткаТоваров.СоСклада;
		}
		// ЗаполнитьСпособСписанияОстаткаТоваровТабЧасти()
		// Заполняет процент розничной наценки в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект     - объект редактируемого документа.
		//

		public void ЗаполнитьПроцентРозничнойНаценкиТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			/*// Заполнять имеет смысл только для розничного склада.
*/
			//Склад = УправлениеРозничнойТорговлей.ЕстьНТТВДокументе(ДокументОбъект);
			if(true/*Склад = Неопределено*/)
			{
			}
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//ХарактеристикаНоменклатуры = ПолучитьЗначениеРеквизитаТЧ(МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, "ХарактеристикаНоменклатуры");
			//ТипЦенРозничнойТорговли = Склад.ТипЦенРозничнойТорговли;
			/*СтрокаТабличнойЧасти.ПроцентРозничнойНаценки = Ценообразование.ПолучитьПроцентСкидкиНаценкиЦеныНоменклатуры(
	                                                            СтрокаТабличнойЧасти.Номенклатура,
	                                                            ХарактеристикаНоменклатуры,
	                                                            ТипЦенРозничнойТорговли,
	                                                            ДокументОбъект.Дата );*/
		}
		// ЗаполнитьПроцентРозничнойНаценкиТабЧасти()
		// Процедура заполняет единицу в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти     - строка табличной части документа,
		//  ДокументОбъект           - объект редактируемого документа.
		//

		public void ЗаполнитьЕдиницуТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			/*// берем из самого реквизита Номенклатура
*/
			//СтрокаТабличнойЧасти.ЕдиницаИзмерения 	 = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков;
			//СтрокаТабличнойЧасти.Коэффициент = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
			//РассчитатьКоличествоТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
			//ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
		}
		// ЗаполнитьЕдиницуТабЧасти()
		// Процедура заполняет единицу мест в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти     - строка табличной части документа,
		//  ДокументОбъект           - объект редактируемого документа.
		//

		public void ЗаполнитьЕдиницуМестТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, ПроверятьРеквизит = Истина*/)
		{
			if(true/*ПроверятьРеквизит*/)
			{
				//ИмяТабличнойЧасти   = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
				//МетаданныеДокумента = ДокументОбъект.Метаданные();
				if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмеренияМест", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
				{
					if(true/*НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест)*/)
					{
						/*// берем из самого реквизита Номенклатура
*/
						//СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест 	 = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаИзмеренияМест;
					}
					//РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
				}
			}
		}
		// ЗаполнитьЕдиницуТабЧасти()
		// Процедура заполняет единицу и цену по ценам покупки в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти           - строка табличной части документа,
		//  ДокументОбъект                 - объект редактируемого документа.
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета
		//  ПересчитыватьНалогиВЦене       - булево, определяет необходимость пересчета цен по флагам налогов в документе,
		//                                   необязательный, по умолчанию Истина.
		//

		public void ЗаполнитьЕдиницуЦенуПокупкиТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, СтруктураШапкиДокумента, ВалютаРегламентированногоУчета, ПересчитыватьНалогиВЦене = Истина*/)
		{
			//ИмяТабличнойЧасти   = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//ХарактеристикаНоменклатуры = ПолучитьЗначениеРеквизитаТЧ(МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, "ХарактеристикаНоменклатуры");
			//СтруктураШапкиДокумента.Свойство("Контрагент",         Контрагент);
			//СтруктураШапкиДокумента.Свойство("ТипЦен",             ТипЦен);
			//СтруктураШапкиДокумента.Свойство("ДоговорКонтрагента", ДоговорКонтрагента);
			//СтруктураШапкиДокумента.Свойство("ДатаДокумента",      ДатаДокумента);
			//СтруктураШапкиДокумента.Свойство("ВалютаДокумента",    ВалютаДокумента);
			//СтруктураШапкиДокумента.Свойство("УчитыватьНДС",       УчитыватьНДС);
			//СтруктураШапкиДокумента.Свойство("СуммаВключаетНДС",   СуммаВключаетНДС);
			if(true/*ЗначениеЗаполнено(Контрагент) И ЗначениеЗаполнено(ТипЦен)*/)
			{
				/*// Попытаемся получить цену из условий поставок или данных регистра ЦеныНоменклатурыКонтрагентов 
*/
				/*Цена = Ценообразование.ПолучитьЦенуКонтрагента(СтрокаТабличнойЧасти.Номенклатура, ХарактеристикаНоменклатуры, Контрагент,
		                               ТипЦен, ДатаДокумента, СтрокаТабличнойЧасти.ЕдиницаИзмерения,
		                               ВалютаДокумента, ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, ВалютаРегламентированногоУчета),
		                               ЗаполнениеДокументов.КратностьДокумента(ДокументОбъект, ВалютаРегламентированногоУчета),
		                               ДоговорКонтрагента,
		                               ОбщегоНазначения.ПолучитьРеквизитШапки("УсловиеПродаж", ДокументОбъект, МетаданныеДокумента));*/
				/*// Если удалось получить цену, то пересчитаем ее по настройкам налогообложения
*/
				if(true/*ЗначениеЗаполнено(Цена)*/)
				{
					if(true/*ПересчитыватьНалогиВЦене*/)
					{
						/*СтрокаТабличнойЧасти.Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена, 
				                            Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов, 
				                            ТипЦен.ЦенаВключаетНДС,
				                            УчитыватьНДС, СуммаВключаетНДС, 
				                            УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));*/
					}
				}
			}
			/*// Если единица измерения не заполнена, или не является единицей текущей номенклатуры, то заполним ее единицей хранения остатков
*/
			if(true/*НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмерения)
		ИЛИ СтрокаТабличнойЧасти.ЕдиницаИзмерения.Владелец <> СтрокаТабличнойЧасти.Номенклатура*/)
			{
				//СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков;
			}
			//СтрокаТабличнойЧасти.Коэффициент      = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
			//РассчитатьКоличествоТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
			//ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
		}
		// ЗаполнитьЕдиницуЦенуПокупкиТабЧасти()
		// Процедура заполняет цену по ценам покупки в строке табличной части документа (по единице хранения остатков)
		//
		// Параметры:
		//  СтрокаТабличнойЧасти           - строка табличной части документа,
		//  ДокументОбъект                 - объект редактируемого документа.
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета
		//  ПересчитыватьНалогиВЦене       - булево, определяет необходимость пересчета цен по флагам налогов в документе,
		//                                   необязательный, по умолчанию Истина.
		//

		public void ЗаполнитьЦенуПокупкиТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, СтруктураШапкиДокумента, ВалютаРегламентированногоУчета, ПересчитыватьНалогиВЦене = Истина*/)
		{
			//ИмяТабличнойЧасти   = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//ХарактеристикаНоменклатуры = ПолучитьЗначениеРеквизитаТЧ(МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, "ХарактеристикаНоменклатуры");
			//СтруктураШапкиДокумента.Свойство("Контрагент",         Контрагент);
			//СтруктураШапкиДокумента.Свойство("ТипЦен",             ТипЦен);
			//СтруктураШапкиДокумента.Свойство("ДоговорКонтрагента", ДоговорКонтрагента);
			//СтруктураШапкиДокумента.Свойство("ДатаДокумента",      ДатаДокумента);
			//СтруктураШапкиДокумента.Свойство("ВалютаДокумента",    ВалютаДокумента);
			//СтруктураШапкиДокумента.Свойство("УчитыватьНДС",       УчитыватьНДС);
			//СтруктураШапкиДокумента.Свойство("СуммаВключаетНДС",   СуммаВключаетНДС);
			/*// Если не заданы значения измерений, то устанавливаем по справочнику
*/
			if(true/*НЕ ЗначениеЗаполнено(Контрагент)
	 Или НЕ ЗначениеЗаполнено(ТипЦен)*/)
			{
			}
		}
		// ЗаполнитьЦенуПокупкиТабЧасти()
		// Процедура заполняет цену по ценам продажи в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа.
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета
		//

		public void ЗаполнитьЦенуПродажиТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, ВалютаРегламентированногоУчета*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//ХарактеристикаНоменклатуры = ПолучитьЗначениеРеквизитаТЧ(МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, "ХарактеристикаНоменклатуры");
			if(true/*МетаданныеДокумента.Реквизиты.Найти("ВалютаДокумента") <> Неопределено*/)
			{
				//ВалютаДокумента    = ДокументОбъект.ВалютаДокумента;
				//КурсДокумента      = ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
				//КратностьДокумента = ЗаполнениеДокументов.КратностьДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
			}
			//ТекСклад = ОбщегоНазначения.ПолучитьРеквизитШапки("Склад", ДокументОбъект, МетаданныеДокумента);
			if(true/*ТекСклад = Неопределено*/)
			{
				//ТекСклад = ОбщегоНазначения.ПолучитьРеквизитШапки("СкладОрдер", ДокументОбъект, МетаданныеДокумента, Справочники.Склады.ПустаяСсылка());
				if(true/*ТипЗнч(ТекСклад) <> Тип("СправочникСсылка.Склады")*/)
				{
					//ТекСклад = Справочники.Склады.ПустаяСсылка();
				}
			}
			if(true/*ТекСклад.ВидСклада = Перечисления.ВидыСкладов.Розничный*/)
			{
				/*Цена = УправлениеРозничнойТорговлей.ПолучитьПродажнуюЦену(ДокументОбъект.Дата, СтрокаТабличнойЧасти.Номенклатура,
			   ХарактеристикаНоменклатуры, ТекСклад, ОбщегоНазначения.ПолучитьРеквизитШапки("УсловиеПродаж",
			   ДокументОбъект, МетаданныеДокумента));*/
				/*Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаРегламентированногоУчета,
			   ВалютаДокумента, КурсДокумента, КратностьДокумента, ДокументОбъект.Дата);*/
			}
			/*// Если цену заполнили из регистра, то ее надо пересчитывать по флагам налогообложения.
*/
			if(true/*ЗначениеЗаполнено(Цена)*/)
			{
				/*СтрокаТабличнойЧасти.Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
					Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры,
					ДокументОбъект.ТипЦен.ЦенаВключаетНДС,
					МетаданныеДокумента.Реквизиты.Найти("УчитыватьНДС") <> Неопределено
					И ДокументОбъект.УчитыватьНДС,
					МетаданныеДокумента.Реквизиты.Найти("СуммаВключаетНДС") <> Неопределено
					И ДокументОбъект.СуммаВключаетНДС,
					?(ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("СтавкаНДС", МетаданныеДокумента, ИмяТабличнойЧасти),
					УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС),0));*/
			}
		}
		// ЗаполнитьЦенуПродажиТабЧасти()
		// Процедура заполняет единицу и цену по ценам продажи в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти           - строка табличной части документа,
		//  ДокументОбъект                 - объект редактируемого документа.
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета,
		//  ВалютаДокумента                - необязательный параметр, валюта, в которой надо заполнить цену,
		//                                   если не задан, то цена заполняется в валюте документа,
		//                                   если нет валюты документа, то в валюте упр. учета.
		//  ТипЦен                         - необязательный параметр, тип цен для которого нужно выполнить заполнение
		//  ЭтоРозница                     - необязательный параметр, признак того, что цену нужно заполнять из регистра цены АТТ
		//

		public void ЗаполнитьЕдиницуЦенуПродажиТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, ВалютаРегламентированногоУчета,
                                              ВалютаДокумента =Неопределено, ТипЦен = Неопределено, ЭтоРозница = Ложь*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			if(true/*НЕ ЗначениеЗаполнено(ТипЦен)*/)
			{
				//ТекТипЦен = ДокументОбъект.ТипЦен;
			}
			//ХарактеристикаНоменклатуры = ПолучитьЗначениеРеквизитаТЧ(МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, "ХарактеристикаНоменклатуры");
			if(true/*НЕ ЗначениеЗаполнено(ВалютаДокумента)*/)
			{
				if(true/*МетаданныеДокумента.Реквизиты.Найти("ВалютаДокумента") <> Неопределено*/)
				{
					//ВалютаДокумента    = ДокументОбъект.ВалютаДокумента;
					//КурсДокумента      = ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
					//КратностьДокумента = ЗаполнениеДокументов.КратностьДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
				}
			}
			//ТекСклад = ОбщегоНазначения.ПолучитьРеквизитШапки("Склад", ДокументОбъект, МетаданныеДокумента);
			if(true/*ТекСклад = Неопределено*/)
			{
				//ТекСклад = ОбщегоНазначения.ПолучитьРеквизитШапки("СкладОрдер", ДокументОбъект, МетаданныеДокумента, Справочники.Склады.ПустаяСсылка());
				if(true/*ТипЗнч(ТекСклад) <> Тип("СправочникСсылка.Склады")*/)
				{
					//ТекСклад = Справочники.Склады.ПустаяСсылка();
				}
			}
			if(true/*ЭтоРозница И ТекСклад.ВидСклада = Перечисления.ВидыСкладов.Розничный*/)
			{
				if(true/*НЕ ЗначениеЗаполнено(ТекСклад)*/)
				{
					//СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков;
					//СтрокаТабличнойЧасти.Цена = 0;
				}
			}
			//СтрокаТабличнойЧасти.Коэффициент = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
			//РассчитатьКоличествоТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
			//ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
		}
		// ЗаполнитьЕдиницуЦенуПродажиТабЧасти()
		// Процедура заполняет единицу и розничную цену продажи по в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти           - строка табличной части документа;
		//  ДокументОбъект                 - объект редактируемого документа;
		//  СкладКомпании                  - ссылка на справочник, розничный склад компании по которому надо
		//                                   определить розничную цену;
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета
		//  ЗаказПокупателя                - ссылка на документ, Заказ покупателя, из резерва по которому надо
		//                                   определить розничную цену, если не задан, то розничная цена
		//                                   берется для сводного остатка
		//

		public void ЗаполнитьЕдиницуРозничнуюЦенуПродажиТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, СкладКомпании,
                                                       ВалютаРегламентированногоУчета*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//ХарактеристикаНоменклатуры = ПолучитьЗначениеРеквизитаТЧ(МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, "ХарактеристикаНоменклатуры");
			if(true/*МетаданныеДокумента.Реквизиты.Найти("ВалютаДокумента") <> Неопределено*/)
			{
				//ВалютаДокумента    = ДокументОбъект.ВалютаДокумента;
				//КурсДокумента      = ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
				//КратностьДокумента = ЗаполнениеДокументов.КратностьДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
			}
			if(true/*НЕ ЗначениеЗаполнено(СкладКомпании)*/)
			{
				/*// берем из самого реквизита Номенклатура
*/
				//СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков;
				//СтрокаТабличнойЧасти.Коэффициент      = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
				//СтрокаТабличнойЧасти.Цена = 0;
			}
			//РассчитатьКоличествоТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
		}
		// ЗаполнитьЕдиницуРозничнуюЦенуПродажиТабЧасти()
		// Процедура заполняет цену возвратной тары по ценам покупки в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти           - строка табличной части документа,
		//  ДокументОбъект                 - объект редактируемого документа,
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета.
		//

		public void ЗаполнитьЦенуВозвратнойТарыТабЧастиПоступление(/*СтрокаТабличнойЧасти, ДокументОбъект, ВалютаРегламентированногоУчета*/)
		{
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			/*// Из регистра сведений ЦеныКонтрагентов по измерениям Контрагент, Номенклатура, ТипЦен получить ресурсы,
*/
			/*// установить коэффициент.
*/
			/*// Если не заданы значения измерений, то устанавливаем по справочнику.
*/
			if(true/*МетаданныеДокумента.Реквизиты.Найти("Контрагент") = Неопределено*/)
			{
			}
		}
		// ЗаполнитьЦенуВозвратнойТарыТабЧастиПоступление()
		// Процедура заполняет цену возвратной тары по ценам продажи в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти           - строка табличной части документа,
		//  ДокументОбъект                 - объект редактируемого документа.
		//  ДоговорКонтрагента             - договор контрагента в случае, если его надо брать не из данного документа,
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета.
		//

		public void ЗаполнитьЦенуВозвратнойТарыТабЧастиОтпуск(/*СтрокаТабличнойЧасти, ДокументОбъект, ДоговорКонтрагента = Неопределено, ВалютаРегламентированногоУчета*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//ХарактеристикаНоменклатуры = ПолучитьЗначениеРеквизитаТЧ(МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, "ХарактеристикаНоменклатуры");
			/*// Если не заданы значения измерений, то устанавливаем по справочнику
*/
			if(true/*НЕ ЗначениеЗаполнено(ДокументОбъект.ТипЦен)*/)
			{
				/*// берем из самого реквизита Номенклатура
*/
				//СтрокаТабличнойЧасти.Цена = 0;
			}
		}
		// ЗаполнитьЦенуВозвратнойТарыТабЧастиОтпуск()
		// Рассчитывает розничную цену в строке табличной части документа.
		//
		// Параметры:
		//  СтрокаТабличнойЧасти           - строка табличной части документа.
		//  ДокументОбъект                 - объект редактируемого документа.
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета.
		//

		public void РассчитатьРозничнуюЦенуТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, ВалютаРегламентированногоУчета*/)
		{
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			/*// Рассчитывать розничную цену имеет смысл только для розничного склада.
*/
			//Склад = УправлениеРозничнойТорговлей.ЕстьНТТВДокументе(ДокументОбъект);
			if(true/*Склад = Неопределено*/)
			{
			}
			if(true/*МетаданныеДокумента.Реквизиты.Найти("ВалютаДокумента") <> Неопределено*/)
			{
				//ВалютаДокумента    = ДокументОбъект.ВалютаДокумента;
				//КурсДокумента      = ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
				//КратностьДокумента = ЗаполнениеДокументов.КратностьДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
			}
			//ТипЦенРозничнойТорговли = Склад.ТипЦенРозничнойТорговли;
			/*// Если в документе налогов нет, считаем, что цена со всеми налогами.
*/
			if(true/*МетаданныеДокумента.Реквизиты.Найти("СуммаВключаетНДС") <> Неопределено*/)
			{
				//СуммаВключаетНДС = ДокументОбъект.СуммаВключаетНДС;
				//СтавкаНДС        = УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС);
			}
			/*СтрокаТабличнойЧасти.ЦенаВРознице = УправлениеРозничнойТорговлей.РассчитатьРозничнуюЦену(СтрокаТабличнойЧасти.Цена,
	                                                            ВалютаДокумента,
	                                                            КурсДокумента,
	                                                            КратностьДокумента,
	                                                            ВалютаРегламентированногоУчета,
	                                                            СтрокаТабличнойЧасти.ПроцентРозничнойНаценки,
	                                                            СуммаВключаетНДС,
	                                                            СтавкаНДС,
	                                                            ТипЦенРозничнойТорговли,
	                                                            СтрокаТабличнойЧасти.ЕдиницаИзмерения,
	                                                            СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков);*/
		}
		// РассчитатьРозничнуюЦенуТабЧасти()
		// Рассчитывает процент розничной наценкив строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти           - строка табличной части документа,
		//  ДокументОбъект                 - объект редактируемого документа.
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета
		//

		public void РассчитатьПроцентРозничнойНаценкиТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, ВалютаРегламентированногоУчета*/)
		{
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			if(true/*МетаданныеДокумента.Реквизиты.Найти("ВалютаДокумента") <> Неопределено*/)
			{
				//ВалютаДокумента    = ДокументОбъект.ВалютаДокумента;
				//КурсДокумента      = ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
				//КратностьДокумента = ЗаполнениеДокументов.КратностьДокумента(ДокументОбъект, ВалютаРегламентированногоУчета);
			}
			/*// Рассчитывать процент имеет смысл только для розничного склада.
*/
			//Склад = УправлениеРозничнойТорговлей.ЕстьНТТВДокументе(ДокументОбъект);
			if(true/*Склад = Неопределено*/)
			{
			}
			if(true/*СтрокаТабличнойЧасти.Цена = 0*/)
			{
				//СтрокаТабличнойЧасти.ПроцентРозничнойНаценки = 0;
			}
		}
		// РассчитатьПроцентРозничнойНаценкиТабЧасти()
		// Рассчитывает сумму в строке табличной части документа
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа,
		//  ВидРасчета           - "Со всеми скидками", сумма минус скидки;
		//                         "Без учета ручной скидки", сумма минус автоматические скидки;
		//                         "Без учета скидок", сумма (Цена * Количество);
		//

		public void РассчитатьСуммуТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, СпособРасчета = Неопределено*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество;
			//СуммаСкидки = 0;
			if(true/*(СпособРасчета = Неопределено)
	 Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.СУчетомВсехСкидок)
	 Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки)*/)
			{
				if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента,
			                                 ИмяТабличнойЧасти)*/)
				{
					//СуммаСкидки = Сумма * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок / 100;
				}
				if(true/*(СпособРасчета <> Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки)*/)
				{
					if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
					{
						//СуммаСкидки = СуммаСкидки + (Сумма * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100);
					}
				}
			}
			//СтрокаТабличнойЧасти.Сумма = Сумма - СуммаСкидки;
		}
		// РассчитатьСуммуТабЧасти()
		// Рассчитывает сумму в строке возвратной тары документа
		//
		// Параметры:
		//  СтрокаВозвратнойТары  - строка возвратной тары табличной части документа,
		//  ДокументОбъект     - объект редактируемого документа.
		//

		public void РассчитатьСуммуВозвратнойТарыТабЧасти(/*СтрокаВозвратнойТары , ДокументОбъект*/)
		{
			//СтрокаВозвратнойТары.Сумма = СтрокаВозвратнойТары.Цена * СтрокаВозвратнойТары.Количество;
		}
		// РассчитатьСуммуВозвратнойТарыТабЧасти()
		// Расчет, исходя из постоянной суммы
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа.
		//

		public void РассчитатьСуммуНДСТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			/*// Если в документе нет флагов учета НДС, то в конфигурации считается, что суммы включают НДС.
*/
			//УчитыватьНДС = ОбщегоНазначения.ПолучитьРеквизитШапки("УчитыватьНДС", ДокументОбъект, МетаданныеДокумента, Истина);
			//СуммаВключаетНДС = ОбщегоНазначения.ПолучитьРеквизитШапки("СуммаВключаетНДС", ДокументОбъект, МетаданныеДокумента, Истина);
			/*СтрокаТабличнойЧасти.СуммаНДС = УчетНДС.РассчитатьСуммуНДС(СтрокаТабличнойЧасти.Сумма,
	                                                   УчитыватьНДС, СуммаВключаетНДС,
	                                                   УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));*/
		}
		// РассчитатьСуммуНДСТабЧасти()

		public void РассчитатьСуммуНДСТабЧасти_ДенежныеСредства(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//УчитыватьНДС = ОбщегоНазначения.ПолучитьРеквизитШапки("УчитыватьНДС", ДокументОбъект, МетаданныеДокумента, Истина);
			/*СтрокаТабличнойЧасти.СуммаНДС = УчетНДС.РассчитатьСуммуНДС(СтрокаТабличнойЧасти.Сумма,
	                                                   УчитыватьНДС,истина, 
	                                                   УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));*/
		}
		// РассчитатьСуммуНДСТабЧасти_ДенежныеСредства()
		// Расчет, исходя из постоянной суммы
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа.
		//

		public void РассчитатьСуммуНДСПередачиТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			/*СтрокаТабличнойЧасти.СуммаНДСПередачи = УчетНДС.РассчитатьСуммуНДС(СтрокаТабличнойЧасти.СуммаПередачи,
	                                                   ДокументОбъект.УчитыватьНДС,
	                                                   ДокументОбъект.СуммаВключаетНДС,
	                                                   УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));*/
		}
		// РассчитатьСуммуНДСТабЧасти()
		// Рассчитывает количество исходя из количества мест
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа.
		//

		public void РассчитатьКоличествоТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			//ИмяТабличнойЧасти   = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмеренияМест", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
			{
				if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Количество", МетаданныеДокумента, ИмяТабличнойЧасти)
		   И ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("КоличествоМест", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
				{
					if(true/*НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмерения)
			   И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура)*/)
					{
						/*ОбщегоНазначения.СообщитьОбОшибке("Для " + СокрЛП(СтрокаТабличнойЧасти.Номенклатура) + " не выбрана единица измерения!
				                 |Пересчет количества невозможен.");*/
					}
				}
			}
		}
		// РассчитатьКоличествоТабЧасти()
		// Рассчитывает количество мест исходя из количества
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части документа,
		//  ДокументОбъект       - объект редактируемого документа.
		//

		public void РассчитатьКоличествоМестТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			//ИмяТабличнойЧасти   = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмеренияМест", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
			{
				if(true/*ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Количество", МетаданныеДокумента, ИмяТабличнойЧасти)
		   И ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("КоличествоМест", МетаданныеДокумента, ИмяТабличнойЧасти)*/)
				{
					if(true/*НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмерения)
			   И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура)*/)
					{
						/*ОбщегоНазначения.СообщитьОбОшибке("Для " + СокрЛП(СтрокаТабличнойЧасти.Номенклатура) + " не выбрана единица измерения цены!
				                 |Пересчет количества невозможен.");*/
					}
				}
			}
		}
		// РассчитатьКоличествоМестТабЧасти()
		// Процедура выполняет проверку заполнения единицы измерения мест и количества мест
		//
		// Параметры:
		//  ТабличнаяЧасть - табличная часть документа, в которой осуществляется проверка
		//

		public void ПриЗаписиПроверитьЕдиницуИзмеренияМест(/*ТабличнаяЧасть*/)
		{
		}
		// ПриЗаписиПроверитьЕдиницуИзмеренияМест()
		// Процедура выполняет проверку заполнения ставки НДС
		//
		// Параметры:
		//  ДокОбъект - документ для которого производится проверка
		//  ТабличнаяЧасть - табличная часть документа, в которой осуществляется проверка
		//

		public void ПриЗаписиПроверитьСтавкуНДС(/*ДокОбъект, ТабличнаяЧасть*/)
		{
			if(true/*ДокОбъект.УчитыватьНДС*/)
			{
			}
		}
		// Функция выполняет поиск первой, удовлетворяющей условию поика, строки табличной части.
		//
		// Параметры:
		//  ТабличнаяЧасть - табличная часть документа, в которой осуществляется поиск,
		//  СтруктураОтбора - структура - задает условие поиска.
		//
		// Возвращаемое значение:
		//  Строка табличной части - найденная строка табличной части,
		//  Неопределено           - строка табличной части не найдена.
		//

		public object НайтиСтрокуТабЧасти(/*ТабличнаяЧасть, СтруктураОтбора*/)
		{
			//СтрокаТабличнойЧасти = Неопределено;
			//МассивНайденныхСтрок = ТабличнаяЧасть.НайтиСтроки(СтруктураОтбора);
			if(true/*МассивНайденныхСтрок.Количество() > 0*/)
			{
				/*// Нашли. Вернем первую найденную строку.
*/
				//СтрокаТабличнойЧасти = МассивНайденныхСтрок[0];
			}
			return null;
		}
		// НайтиСтрокуТабЧасти()
		// Рассчитывает розничную наценку и розничную цену по одному из двух алгоритмов, в зависимости от
		// настройке заданной в справочнике складов
		//
		// Параметры:
		//  ДокументОбъект                 - объект редактируемого документа
		//  СтрокаТабличнойЧасти           - строка табличной части документа
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета, в которой возвращается розничная цена
		//

		public void РассчитатьРозничнуюЦенуВСтрокеТабЧасти(/*ДокументОбъект, СтрокаТабличнойЧасти, ВалютаРегламентированногоУчета*/)
		{
			if(true/*ДокументОбъект.Склад.РасчетРозничныхЦенПоТорговойНаценке*/)
			{
				//ЗаполнитьПроцентРозничнойНаценкиТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
				//РассчитатьРозничнуюЦенуТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, ВалютаРегламентированногоУчета);
			}
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ПЛАНОВОЙ СЕБЕСТОИМОСТЬЮ
		// Рассчитывает сумму и отклонение от плановой себестоимости в строке табличной части документа.
		//
		// Параметры:
		//  СтрокаТабличнойЧасти                          - строка табличной части документа,
		//  ДокументОбъект                                - объект редактируемого документа,
		//  СуммаПлановойСебестоимости                    - в этот параметр будет помещено значение,
		//  СуммаОтклоненияОтСуммыПлановойСебестоимости   - в этот параметр будет помещено значение,
		//  ПроцентОтклоненияОтСуммыПлановойСебестоимости - в этот параметр будет помещено значение.
		//

		public void ПолучитьСуммуИОтклонениеОтПлановойСебестоимостиТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект,
								СуммаПлановойСебестоимости = 0, 
								СуммаОтклоненияОтСуммыПлановойСебестоимости = 0, 
								ПроцентОтклоненияОтСуммыПлановойСебестоимости = 0*/)
		{
			/*// Рассчитываем сумму плановой себестоимости.
*/
			//СуммаПлановойСебестоимости = СтрокаТабличнойЧасти.ПлановаяСебестоимость * СтрокаТабличнойЧасти.Количество;
			//СуммаПоДокументу = СтрокаТабличнойЧасти.Сумма;
			/*// Учитываем налоги.
*/
			if(true/*(ДокументОбъект.УчитыватьНДС) 
	   И (НЕ ДокументОбъект.СуммаВключаетНДС)*/)
			{
				//СуммаПоДокументу           = СуммаПоДокументу           + СтрокаТабличнойЧасти.СуммаНДС;
				if(true/*СуммаПлановойСебестоимости <> 0*/)
				{
					/*// Рассчитаем налоги от суммы плановой себестоимости
*/
					/*СуммаНДСПлановойСебестоимости = УчетНДС.РассчитатьСуммуНДС(СуммаПлановойСебестоимости,
			                                ДокументОбъект.УчитыватьНДС,
			                                ДокументОбъект.СуммаВключаетНДС,
			                                УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));*/
					//СуммаПлановойСебестоимости = СуммаПлановойСебестоимости + СуммаНДСПлановойСебестоимости;
				}
			}
			//СуммаОтклоненияОтСуммыПлановойСебестоимости   = СуммаПоДокументу - СуммаПлановойСебестоимости;
			/*ПроцентОтклоненияОтСуммыПлановойСебестоимости = ?(СуммаПлановойСебестоимости = 0, 
	                                                ?(СуммаОтклоненияОтСуммыПлановойСебестоимости = 0, 0, 100), 
	                                                 (СуммаОтклоненияОтСуммыПлановойСебестоимости 
	                                                / СуммаПлановойСебестоимости) * 100);*/
		}
		// ПолучитьСуммуИОтклонениеОтПлановойСебестоимостиТабЧасти()
		// Заполняет информацию о сумме и отклонении от плановой себестоимости в ячейках строки табличной части документа
		// Вызывается из процедуры ТоварыПриВыводеСтроки().
		//
		// Параметры:
		//  ОформлениеСтроки     - объект, содержащий оформление строки (шрифт, цвет) и коллекцию оформлений ячеек.
		//  СтрокаТабличнойЧасти - редактируемая строка табличной части,
		//  ДокументОбъект       - объект редактируемого документа.
		//

		public void ЗаполнитьСуммуИОтклонениеОтПлановойСебестоимостиТабЧасти(/*ОформлениеСтроки, СтрокаТабличнойЧасти, ДокументОбъект*/)
		{
			if(true/*Не ДокументОбъект.ИспользоватьПлановуюСебестоимость*/)
			{
				/*// Не выполняем никаких действий, если плановая себестоимость в документе не учитывается.
*/
			}
			//Ячейка = ОформлениеСтроки.Ячейки;
			//Ячейка.СуммаПлановойСебестоимости.ОтображатьТекст                    = Истина;
			//Ячейка.СуммаОтклоненияОтСуммыПлановойСебестоимости.ОтображатьТекст   = Истина;
			//Ячейка.ПроцентОтклоненияОтСуммыПлановойСебестоимости.ОтображатьТекст = Истина;
			/*ПолучитьСуммуИОтклонениеОтПлановойСебестоимостиТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект,
	                                                  СуммаПлановойСебестоимости, 
	                                                  СуммаОтклоненияОтСуммыПлановойСебестоимости,
	                                                  ПроцентОтклоненияОтСуммыПлановойСебестоимости);*/
			if(true/*СуммаПлановойСебестоимости = Неопределено*/)
			{
				/*// Если плановая себестоимость неопределена, 
*/
				/*// информация об отклонении от плановой себестоимости также будет неопределенной.
*/
				//Ячейка.СуммаПлановойСебестоимости.Текст                    = "";
				//Ячейка.СуммаОтклоненияОтСуммыПлановойСебестоимости.Текст   = "";
				//Ячейка.ПроцентОтклоненияОтСуммыПлановойСебестоимости.Текст = "";
			}
		}
		// ЗаполнитьСуммуИОтклонениеОтПлановойСебестоимостиТабЧасти()
		// Рассчитывает плановую себестоимость в строке табличной части документа.
		//
		// Параметры:
		//  СтрокаТабличнойЧасти           - строка табличной части документа,
		//  ДокументОбъект                 - объект редактируемого документа.
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета
		//

		public void РассчитатьПлановуюСебестоимостьВСтрокеТабЧасти(/*СтрокаТабличнойЧасти, ДокументОбъект, ВалютаРегламентированногоУчета*/)
		{
			//ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//ХарактеристикаНоменклатуры = ПолучитьЗначениеРеквизитаТЧ(МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, "ХарактеристикаНоменклатуры");
			if(true/*МетаданныеДокумента.Реквизиты.Найти("ИспользоватьПлановуюСебестоимость") <> Неопределено*/)
			{
				if(true/*Не ДокументОбъект.ИспользоватьПлановуюСебестоимость*/)
				{
					/*// Не выполняем никаких действий, если плановая себестоимость в документе не учитывается.
*/
				}
			}
			//ТипЦенПлановойСебестоимостиНоменклатуры = глЗначениеПеременной("ТипЦенПлановойСебестоимостиНоменклатуры");
			/*ПлановаяСебестоимость = Ценообразование.ПолучитьЦенуНоменклатуры(СтрокаТабличнойЧасти.Номенклатура, ХарактеристикаНоменклатуры,
	                                             ТипЦенПлановойСебестоимостиНоменклатуры, 
	                                             ДокументОбъект.Дата, 
	                                             СтрокаТабличнойЧасти.ЕдиницаИзмерения, 
	                                             ДокументОбъект.ВалютаДокумента,
	                                             ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, ВалютаРегламентированногоУчета),
	                                             ЗаполнениеДокументов.КратностьДокумента(ДокументОбъект, ВалютаРегламентированногоУчета));*/
			/*ПлановаяСебестоимость = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(ПлановаяСебестоимость,
	                                               Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры,
	                                               ТипЦенПлановойСебестоимостиНоменклатуры.ЦенаВключаетНДС,
	                                               ДокументОбъект.УчитыватьНДС,
	                                               ДокументОбъект.СуммаВключаетНДС,
	                                               УчетНДС.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));*/
			//СтрокаТабличнойЧасти.ПлановаяСебестоимость = ПлановаяСебестоимость;
		}
		// РассчитатьПлановуюСебестоимостьВСтрокеТабЧасти()
		// Рассчитывает плановую себестоимость во всех строках табличной части документа.
		//
		// Параметры:
		//  ДокументОбъект                 - объект редактируемого документа.
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета
		//

		public void РассчитатьПлановуюСебестоимостьВСтрокахТабЧасти(/*ДокументОбъект, ВалютаРегламентированногоУчета*/)
		{
			if(true/*Не ДокументОбъект.ИспользоватьПлановуюСебестоимость*/)
			{
				/*// Не выполняем никаких действий, если плановая себестоимость в документе не учитывается.
*/
			}
			/*// В цикле по ТЧ перезаполняем плановую себестоимость.
*/
		}
		// РассчитатьПлановуюСебестоимостьВСтрокахТабЧасти()
		// Пересчитывает плановую себестоимость с учетом новой валюты и налогов.
		//
		// Параметры:
		//  ДокументОбъект    - объект редактируемого документа,
		//  СтруктураЗначений - структура предыдущих зачений реквизитов документа.
		//  ВалютаРегламентированногоУчета - валюта регламентированного учета
		//

		public void ИзменитьВалютуНалогиПлановойСебестоимостиТабЧасти(/*ДокументОбъект, СтруктураЗначений, ВалютаРегламентированногоУчета*/)
		{
			if(true/*Не ДокументОбъект.ИспользоватьПлановуюСебестоимость*/)
			{
				/*// Не выполняем никаких действий, если плановая себестоимость в документе не учитывается.
*/
			}
			/*// В случае, если поменялась валюта.
*/
			if(true/*СтруктураЗначений.ТекущийВалютаДокумента <> ДокументОбъект.ВалютаДокумента*/)
			{
				/*// Плановая себестоимость заполнится с учетом новой валюты и налогов.
*/
				//РассчитатьПлановуюСебестоимостьВСтрокахТабЧасти(ДокументОбъект, ВалютаРегламентированногоУчета);
			}
		}
		// ИзменитьВалютуНалогиПлановойСебестоимостиТабЧасти()
		// Процедура пересчета плановой себестоимости при изменении единицы
		// в строке табличной части документа.
		//
		// Параметры:
		//  СтрокаТабличнойЧасти       - строка табличной части документа,
		//  ДокументОбъект             - объект редактируемого документа,
		//  СтароеЗначениеКоэффициента - предыдущее значение коэффициента.
		//

		public void ПриИзмененииЕдиницыТабЧастиПлановаяСебестоимость(/*СтрокаТабличнойЧасти, ДокументОбъект, 
                                                     СтароеЗначениеКоэффициента*/)
		{
			if(true/*Не ДокументОбъект.ИспользоватьПлановуюСебестоимость*/)
			{
				/*// Не выполняем никаких действий, если плановая себестоимость в документе не учитывается.
*/
			}
			if(true/*СтароеЗначениеКоэффициента > 0*/)
			{
				/*СтрокаТабличнойЧасти.ПлановаяСебестоимость = СтрокаТабличнойЧасти.ПлановаяСебестоимость 
		                                             * СтрокаТабличнойЧасти.Коэффициент 
		                                             / СтароеЗначениеКоэффициента;*/
			}
		}
		// ПриИзмененииЕдиницыТабЧастиПлановаяСебестоимость()

		public void ЗаполнитьПлановуюСебестоимостьНаОсновании(/*ДокументОбъект, ДокументОснование, ВалютаРегламентированногоУчета*/)
		{
			if(true/*Не ДокументОбъект.ИспользоватьПлановуюСебестоимость*/)
			{
				/*// Не выполняем никаких действий, если плановая себестоимость в документе не учитывается.
*/
			}
			/*// По умолчанию заполняем по документу-основанию.
*/
			//ЗаполнитьПоДокументуОснованию = Истина;
			//МетаданныеДокумента = ДокументОснование.Метаданные();
			/*// Проверяем на возможность заполнения по документу-основанию.
*/
			if(true/*НЕ ЗначениеЗаполнено(ДокументОснование)*/)
			{
				//ЗаполнитьПоДокументуОснованию = Ложь;
			}
			if(true/*ЗаполнитьПоДокументуОснованию*/)
			{
				if(true/*МетаданныеДокумента.Реквизиты.Найти("ИспользоватьПлановуюСебестоимость") = Неопределено*/)
				{
					//ЗаполнитьПоДокументуОснованию = Ложь;
				}
			}
			if(true/*ЗаполнитьПоДокументуОснованию*/)
			{
				if(true/*Не ДокументОснование.ИспользоватьПлановуюСебестоимость*/)
				{
					//ЗаполнитьПоДокументуОснованию = Ложь;
				}
			}
			/*// Если невозможно заполнить по документу-основанию, то заполняем по типу цены.
*/
			if(true/*Не ЗаполнитьПоДокументуОснованию*/)
			{
				//РассчитатьПлановуюСебестоимостьВСтрокахТабЧасти(ДокументОбъект, ВалютаРегламентированногоУчета);
			}
			/*// Если возможно, то заполняем.
*/
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("Сделка", ДокументОснование);
			/*Запрос.Текст =
		"ВЫБРАТЬ
		|	Док.Номенклатура,
		|	Док.ПлановаяСебестоимость
		|	ИЗ
		|		Документ." + ДокументОснование.Метаданные().Имя + ".Товары КАК Док
		|	ГДЕ
		|		Док.Ссылка = &Сделка";*/
			//Выборка = Запрос.Выполнить().Выбрать();
			/*// В цикле по ТЧ заполняем плановую себестоимость значениями,
*/
			/*// полученными из документа-основания.
*/
		}
		// тчЗаполнитьПлановуюСебестоимостьНаОсновании()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ РАБОТЫ С ИНТЕРФЕЙСОМ
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ОБРАБОТКИ ПОДБОРА В ТОРГОВЫЕ ДОКУМЕНТЫ
		// Процедура выполняет стандартные действия при изменении счета бухгалтерского учета
		// в строке табличной части документа (заполняет счет налогового учета).
		//
		// Параметры:
		//  СтрокаТабличнойЧасти - строка табличной части возвратная тара документа,
		//

		public void ЗаполнитьСчетНУпоСчетуБУТабЧасти(/*СтрокаТабличнойЧасти*/)
		{
			//СтрокаТабличнойЧасти.СчетУчетаНУ = БухгалтерскийУчет.ПреобразоватьСчетаБУвСчетНУ(Новый Структура("СчетБУ", СтрокаТабличнойЧасти.СчетУчетаБУ));
		}
		// ЗаполнитьСчетНУпоСчетуБУТабЧасти()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ОБРАБОТКИ ПОДБОРА В ПРОИЗВОДСТВЕННЫЕ ДОКУМЕНТЫ
		// Функция открывает форму подбора статей затрат по остаткам
		//

		public object ОткрытьПодборСтатейЗатрат(/* ФормаДокумента, СтруктПараметры*/)
		{
			//ФормаПодбора = Обработки.ПодборПрочихЗатрат.ПолучитьФорму("ОсновнаяФорма", ФормаДокумента, ФормаДокумента);
			//ФормаПодбора.СтруктПараметры    = СтруктПараметры;
			//ФормаПодбора.ЗакрыватьПриВыборе = Ложь;
			//ФормаПодбора.РежимВыбора        = Истина;
			//ФормаПодбора.Открыть();
			return null;
		}
		// ОткрытьПодборСтатейЗатрат()
	}
}
